Centralized application resource manager

ABSTRACT

An application resource manager is provided to organize, prioritize, and optimize data transmissions from several connected applications. Through inter-process communication, the several connected applications may pass all transmission requests to the centralized manager, which will perform all transmissions according to priority. When the transmission includes a download (e.g., file, email, etc.), the manager will pass the complete file (or a pointer to the same) to the originally requesting application. The original application may perform post-processing and then use the downloaded data, including making the data available to the user. If however, the requesting application is offline, the manager may also perform, e.g., the essential post-processing, via a plug-in given to the manager by the application when the application initially connected to the manager. A full sized user interface and a smaller user interface may be provided for un-intrusive execution.

BACKGROUND

Evolving from computer systems capable of running only one applicationat a time, more and more multi-tasking operations are being built intomodern devices. Operating systems are facilitating multiple applicationsexecuting at the same time, and applications are facilitating multiplethreads during execution. Hardware systems are keeping pace withmulti-processor systems, multi-core processors, and systems thatsimulate multi-core processors. Additionally, modern software and usagemodels have evolved from a local computer, to a local computer connectedto a network, to distributed computing. Modern systems are becoming moredependent on the Internet to facilitate current usage patterns. With anexpanding number of concurrently executing applications, each requiringuse of an external communication network for various functions,significant strain is being placed on the fixed network connection of anindividual device. This is true for relatively fast connections, such ashigh-speed consumer connections (e.g., DSL), and even more so forrelatively slow connections, such as cellular Internet connections.

Some attempts at mitigating the effects of these bottlenecks have beenimplemented. Operating Systems will play a natural role in trying tofacilitate multiple data transfers. Additionally, some “downloadmanagers” exist, which try to organize and optimize multiple downloadswithin one application, or even among several applications. However,these applications have serious limitations in both breadth offunctionality, and depth of effectiveness, which example embodiments ofthe present application overcome with the novel features describedherein.

SUMMARY

Example embodiments of the present invention may include systems andmethods for providing a central application manager. An exampleembodiment may include a computer implemented method for managingcomputer applications. The example method may receive, from a firstcomputer application a first download request, the first downloadrequest being based on user input received by the first computerapplication. The example method may receive from a second computerapplication a second download request. The second download request maybe based on user input received by the second computer application.Also, the first and the second computer applications may be independentof each other. The example method may prioritize the first downloadrequest and the second download request, according to at least userpriority input. The example method may download data associated with thedownload requests, according to the prioritization. Also, uponcompletion of a data download, the example method may pass informationregarding the downloaded data to whichever application passed theassociated request to the application manager. Finally, upon completionof a data download, the example method may remove the completed downloadfrom the prioritization queue, and for all remaining data downloadrequests, the example method may continue downloading data associatedwith the remaining data download requests, according to theprioritization.

Further, in an example embodiment of the present invention, thefunctions of receiving and passing may be performed between theapplication manager and at least a third application and third downloadrequest. The prioritization may be based upon input received by theapplication manager, from a user. The example method may recordperformance metrics of the application manager. The application managermay also be configured to receive application updates from an updateserver, and the application manager may be configured to pass theupdates along to whichever application of a plurality of applicationsindicated by a particular update. Additionally, individual connectedapplications may pass along a request for an update, and the applicationmanager may download and pass back the update.

In another example embodiment of the present invention, the applicationmanager may receive a plug-in from some or all of the applications undermanagement. This plug-in may perform a sub-set of functions provided bythe individual applications, and the application manager may performthose functions upon completion of a data transfer. Alternatively, theapplication manager may pass the completed data to the requestingapplication to perform the functions, and only perform them at themanager level when the application is offline.

Additionally, example embodiments of the present invention may includecomponents for providing a user interface. Further, a second, sub-setinterface may be provided with a sub-set of functions. This sub-setinterface may provide any number of features, including “pause all”functions for pausing data transmissions. The sub-set interface may alsonotify the user of new messages received and file transmission status.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts a block diagram of how the different software modulesrelate to each other, according to an example embodiment of the presentinvention.

FIG. 2 depicts an example download queue prioritization procedure,according to an example embodiment of the present invention.

FIG. 3 depicts a block diagram of an example device, according to anexample embodiment of the present invention.

FIG. 4 depicts an example of how the application/manager connectionprocess occurs in one example embodiment of the present invention.

FIG. 5 depicts an example procedure of connecting/initializing a newapplication, according to an example embodiment of the presentinvention.

FIG. 6 depicts an example procedure of receiving, queuing, facilitating,processing, and prioritizing transfer requests, according to an exampleembodiment of the present invention.

FIGS. 7A and 7B depict example graphical layouts of a user interface,according to example embodiments of the present invention.

FIGS. 8A and 8B depict example graphical layouts of a sub-set userinterface, according to example embodiments of the present invention.

DETAILED DESCRIPTION OF EXAMPLE EMBODIMENTS

Example embodiments of the present invention relate to an applicationresource manager for coordinating and optimizing a plurality ofapplications. In this example embodiment, each of the applications isbased on an application framework. Each individual application mayperform individual functions without the assistance of the applicationresource manager. However, the individual applications may interfacewith the application resource manager for various tasks, includingresource limited tasks, such as message and/or data transfers with anexternal network.

The application resource manager may include a number of featuresdesigned to optimize the individual managed applications. First, many ofthe individual applications may require concurrent use of the limitedbandwidth of the network connection of the system. Further, the severaldifferent needs for bandwidth may have a range of priorities, and mayneed to be organized accordingly. Additionally, the application resourcemanager may provide a central notification and control center. Theapplication resource manager may further provide a subset of managerfunctions in a smaller, “slide-out” application display. Additionally,each independent managed application may require some form ofpost-download processing. For example, an mp3 e-commerce site may needto watermark each mp3 for origin determinations. Some or all of thispost-download processing may be performed by the application resourcemanager, instead of the individual application itself, which generallyperforms all of the application specific processing. The applicationresource manager may prioritize and organize an efficient use ofprocessing resources, visual display resources, or any other limitedresource shared among the several individual applications.

FIG. 1 illustrates one example of the relationships and structure of anexample embodiment. The application resource manager 110 is connected tothree independent applications. In one example embodiment, theapplications are built on an iBoard™ framework. These individualapplications (e.g., 120A to 120C) are accessed by the user 160. Theseindividual applications may include any number of software applications,e.g., an mp3 player/downloader, a video streaming service, a game, autility, etc. The applications 120 may be the primary interface for theuser, but the user may also directly access the application resourcemanager 110. The application resource manager may be connected to thenetwork I/O of the system, and facilitate communication with an outsidenetwork 150 (e.g., the Internet). The application resource manager mayinterface with the graphic display unit 160 and processor 170 tofacilitate optimizing these shared resources among the severalapplications. With respect to the network I/O, each individualapplication 120 may have to send and receive all outside communicationvia the application resource manager, and may have no direct access tothe network 150. The application resource manager and individualapplications may run on a general or specific purpose computer ordistributed system configured with any software or hardware. These typesof computer systems, along with the variations of hardware and softwareused in them, are well known in the art, and any configuration suitablefor the inventive aspects of this disclosure may be used.

One example embodiment of the present invention includes the downloadprioritization procedure outlined in FIG. 2. Here, the concurrentexecution of an example application resource manager 200 and two exampleindividual applications 201/202 are illustrated. First, application 201may receive user input from user 260 requesting data from the externalnetwork 250, e.g., a download. At 206, application 201 may send thisrequest to the application resource manager, which may receive therequest at 207. After each incoming request, the download may be placedin a queue and organized according to priority, e.g., at 215. Next, at210, a second application 202 may request data from the external network250, e.g. a download, based on user input. This request may be passed tothe application resource manager and received at 212. Again, the requestis placed in the download queue according to priority at 215. Once atleast one data request has been queued, the example procedure may begindownloading data at 220, from the external network 250. The exampleprocedure continues downloading data until a request is complete. Forexample, at 225, the first download may have finished. The examplemethod will pass that download (or a pointer to the download) to therequesting application at 226. The application resource manager alsoupdates the download queue 216 to remove the associated entry. At 235,the second download request may finish, be passed to the requestingapplication at 236, and be removed from the download queue. At 275, theexample procedure may repeat until terminated.

The example procedure of FIG. 2 is shown with a concurrent, but linearprogression. This figure is for illustrative purposes, and it will beappreciated that a multi-threaded concurrent implementation would be anadvantageous embodiment. For example, a first thread of the applicationresource manager application may continuously be listening for incomingrequests from associated individual applications (e.g., downloadrequests). When at least one request is present in the queue, theapplication resource manager may continuously download data according tothe queue priority, while the first thread is concurrently listeningand/or receiving additional download requests. Further, the downloadingprocess for other requests does not need to be halted when a requestcompletes, but may concurrently continue while the download is passedoff to the post-processor or requesting application (e.g., 201 or 202).Multi-threaded concurrent execution is well known in the art and may beimplemented in any number of ways. Examples may include, multi-processorsystems, multi-core processors, simulated concurrence with timeinterrupt processing, etc. Example embodiments may include a number ofother operations that may require concurrent execution, e.g., asdiscussed with regard to FIG. 4.

FIG. 3 illustrates an example embodiment of an example device configuredto perform the application resource manager functions. This exampledevice includes one or more user input devices 330. The example deviceincludes one or more user output devices 335. Other conventional deviceperipherals may also be connected to the central application managermodule 300, to facilitate the inventive aspects of the example device.For example, a device memory may be included where user settings 320 arestored based on user input from device(s) 330.

The memory may also store the active or stored download queue, and theprioritization logic 310. The prioritization logic may incorporate anumber of techniques to optimize bandwidth performance and userpreferences. In the example embodiment illustrated in FIG. 3, theexample device may store user preferences in the user settings 320,related to the priorities of the user. For example, a user may specifythat the background downloads from a video rental service have a certainpriority over'the background downloads of an mp3 market service.Additional prioritizations may be based on conventional priority schemes(e.g., real-time data prioritized over asynchronous data), orconventional priority structures (e.g., FIFO). Additionally, theprioritized queue may be established or modified based in part on director indirect user input. For example, a user of a file downloadapplication may be provided the option of “add to queue” andadditionally provided the option of “add to top of queue.” In this case,the individual application will not only pass the download request tothe application manager, but also (or as part of the request,) pass amessage indicating a user preference for top priority. Priority may alsobe adjusted by direct user input at the application resource manageruser interface. Different example embodiments may implement differentprioritization schemes using a mixture of user preferences andconventional optimization schemes.

The memory may also store the active or stored message queue. Eachindividual application 315 may generate a number of system messages anduser messages, e.g. an email, instant message, micro-blog update, orsystem message such as “download complete.” The messages may beorganized and prioritized to conserve limited visual space in thesystem's visual output device, e.g. a monitor as output device 335. FIG.8A may illustrate an embodiment of the quick-view slide-out applicationpresenting a prioritization of messages, combined from the severalindividual applications 315. The user may be able to adjust these logicrules in the user settings 320. Users may indicate priorities ofmessages, or disable certain messages (e.g., download completemessages).

Further, the Application Resource Manager Module 300 may execute on aprocessor, e.g. an electronic hardware processor, and include executionscheduling logic 350. The application resource manager 300 may use a mixof default, hardcoded, and user settings to schedule and prioritizeexecutable tasks on a shared resource processor, such that the severalindividual applications 315 may be optimized according to userpreferences. The application resource manager module 300 may execute ona general purpose processor that may include pipeline optimization andother execution scheduling optimizations. The execution schedulinglogic/queue 350 may operate on a higher level, prioritizing the severalindividual applications 315 according to user preferences, and interfacewith any built in general purpose processor scheduler for low leveloptimizations. Alternatively, example embodiments may improve or replaceany hardware optimizers and perform execution scheduling andoptimization at all levels.

In addition to being fully customizable by user preference, defaultprioritizations may follow a formula. The formula may also becustomizable by the user and/or developers, and differentimplementations of example embodiments may use different formulas. Theformula may be based on one or more factors. Each factor may be referredto as a component score, and the formula result may provide aprioritization based on these component scores (e.g., a prioritizationscore). One example formula may be provided in the illustrative contextof a download queue (e.g., 310), and the same or similar prioritizationformula may be applied to an execution scheduler, a messageprioritization scheme, or any other system resource prioritize. Forexample, the formula may be a summation function of several componentscores, including for example, an application score (e.g., associatedwith the originating application), a request score (e.g., assigned bythe application to all requests coming from the application), a contextscore (e.g., time of day, current activity level of the computer, etc.),a user specification score (e.g., user indicated a desire for immediatedownloading of a particular request), and any other component score. Thesum of these may yield a final prioritization score, and the downloadqueue may be organized by prioritization score. This is just one exampleembodiment, a prioritization could be based on any number of formulafunctions, any number of component factors, or any number of otherpriority schemes.

As mentioned, download prioritization (e.g., the prioritization score)may be based on an application score, where each individual applicationis given an initial priority score, which may be associated withdownloads originating from that application. For example, businessapplications may have a higher priority score than entertainmentapplications. The user may be allowed to modify the application scoreassociated with one or more individual applications. Each individualapplication may also assign a request score to each download request.The central prioritization formula may then allow for a mix ofprioritizations among the individual applications. For example, in oneembodiment, requests from a higher priority application may downloadaccording to the request level prioritization, and requests from a lowerpriority application may download only when no further requests existfrom the higher priority application. Another embodiment may allow forhigh priority requests from a low priority application to downloadbefore low priority requests of a high priority application orlow/medium priority requests of a medium priority application.

Additionally, request types may have an associated score, such thatsoftware updates may have a greater priority than file downloads, but alower priority than business related requests. Additionally,prioritizations may be adjusted based on context, e.g., time of day. Forexample, a business related request (e.g., a request from a businessapplication) may have a higher context score between 9 a.m. and 5 p.m.In this way, business requests may take priority during working hours,and other tasks (e.g., software updates) may take priority during othertime periods. Preferred download time slots may be associated with otherrequest types, and each individual application may have a defaultpreferred time slot. These time slots may overlap, as the context score(e.g., time) may be one of many scores used to prioritize the variousrequests.

Each prioritization feature may be fully customizable to the user, ormay be locked by the developer. Example customization options mayinclude the ability to adjust an application score associated with anindividual application. The user may be able to customize the maximumnumber of simultaneous downloads (e.g., one at a time or up to four at atime). The user may be able to customize the maximum bandwidth usage,e.g., the total upload rate and/or total download rate. Additionally,the user may be able to adjust the bandwidth usage for individualrequests, for individual request types, or for individual applications.For example, a user may be able to specify a total download bandwidth ofa thousand kilobytes a second, with the requests of any singleapplication consuming less than twenty kilobytes a second, with nosingle request consuming more than ten kilobytes a second, except for aparticular application and/or a particular request type, which may havedifferent particular limits set by the user. The user may also beprovided control functions for the queue, such as the ability to pause adownload (whether in progress or not), pause all downloads, resume adownload, or resume all downloads. The user may also be able torearrange the queue, which may adjust a user priority score, as one ofseveral scores used to organize the prioritization queue (e.g., asdiscussed above).

The application resource manager module 300 may include an ApplicationProgramming Interface (API) 305, which may be used to interface with theseveral individual applications 315A to 315N. This interface will bediscussed further with regard to FIG. 4. Associated with the severalindividual applications 315, may be an application plug-in set 340. Theapplication resource manager may have a plug-in from each of theindividual applications associated with it. These plug-ins may beinstalled in the application resource manager system when the associatedindividual application is first connected to the application resourcemanager, e.g., as illustrated in FIG. 4. The plug-in may enable anynumber of advantageous features, and may provide the applicationresource manager 300 with a subset of the features associated with theindividual application. For example, many of the individual applications315 may require processing after a download completes. For example, manymp3 vendors require a digital watermark to be added to the mp3 todetermine the origin of the file. This processing would normally occurin the calling application. However, since the application resourcemanager may continue to run in the background, facilitating the queueddownloads, a download may complete after the calling application hasalready been shut down. In this case, the application resource manager,using the associated plug-in, may perform the necessary post-downloadprocessing for the calling application. In some example embodiments ofthe present invention, this feature may be critical for bothtechnological and non-technological reasons. For example, distributionrights given by original content owners to a distribution service, mayrequire immediate processing of certain content, and may not allow thatcontent to reside on the system in native form while waiting for thecalling application to be restarted. Thus, in addition to providing agreater amount of flexibility and optimization, the associated plug-insmay afford additional compliance strategies for application developers.

FIG. 4 illustrates the initial inter-process communication (IPC) betweenthe application resource manager 400 and individual applications 415.The application resource manager may include a permanent listening port410, which may be the same for every application resource manager, e.g.,the manager of a first system and the manager of a second, independentsystem. This port may remain open while the application resource manageris running, continuously listening for new connections. Each individualapplication may be pre-programmed with this known and universallistening port. In the example embodiment of the present invention, eachsystem has only one application resource manager; thus there is nopotential for conflict and the listener port may have a universallyknown address. In other embodiments, the listening port may beoptionally set by the user.

When a new individual application is installed, a unique ID associatedwith the application may be transmitted to the application resourcemanager listener port 410 (e.g., as illustrated in step 1 of FIG. 4).The unique application ID 425A may contain the address of thecommunication port of the sending application (e.g., 420A). Uponreceiving the unique ID 425A with the address of the applicationcommunication port 420A, the application resource manager 400 maygenerate a new, dedicated communication port 410A, for the newindividual application. The application resource manager, using theunique ID 425A, may return the address of the newly createdcommunication port, e.g., 430A. At this point, the application resourcemanager knows the address of the connecting application communicationport 420A, and the individual application 415A knows the address of theport that was created and dedicated to that application 410A. IPC maynow proceed between the APIs of the two programs, e.g., as illustratedin step 3.

As mentioned, the “permanent” listener port 410 is continually listeningfor new connections. Step 4 illustrates a second individual application415B coming online, and sending its unique application ID 425B to thelistener port 410. The application resource manager may create a newcommunication port 410B, and send the ID for that port 430B back to thesecond application communication port 410B. During the establishment ofthe second connection, the first application, having been moved to adedicated communication port, may continue API communication with theapplication resource manager. In step 6, both installed individualapplications are operating and communicating with the applicationresource manager, and the example procedure may continue the process fornewly identified applications.

FIG. 5 illustrates an example procedure according to an exampleembodiment of the, present invention. At 510 the example procedure maywait for a new incoming application communication. Once received, theexample procedure may return to listening for more incoming connectionsat 510, while also progressing to establish a link with the firstapplication. At 525, the application resource manager may create a newmanager-side application port dedicated to the connecting application.At 530, the application resource manager may send the new manager-sideapplication port ID using the previously received application-side portID. At 535, the example procedure may begin ongoing communicationbetween the application resource manager and individual application. Oneof the first communications with a newly established application may beto receive a plug-in from the application. As previously discussed, theplug-in may contain a subset of application features. Specifically, thesubset may include, for example, essential post-download processingoperations that may perform required or performance optimizationfunctions in the event the application is no longer online. In oneembodiment, in the event that the application is still online when thedownload completes, the individual application may perform the postdownload processing itself. At 545, the application resource manager mayinstall the plug-in. The initial connecting session may include anynumber of other initializing tasks, but once complete, at 550, theexample procedure may begin continuous communication between theapplication resource manager and connected application, as needed.

Another example procedure according to an example embodiment of thepresent invention is illustrated in FIG. 6. In this example procedure,individual applications A to N 615 have already been connected andinstalled, e.g., as illustrated in FIGS. 4 and 5. At 610, theapplication resource manager may receive a download request from aconnected application via the associated application port. Theapplication resource manager may queue the request according to theimplemented priority scheme at 620, which may call upon user settings625 to determine prioritization. The application resource managerprogram may continue this aspect of the procedure, receiving and queuingdownload requests. Concurrently with the receiving/queuing operations,at 630, when there are download requests in the queue, the applicationresource manager may initiate a download from an external network 633.At 640, when the optimum number of downloads are already underway, theexample procedure may wait for one of the downloads to complete. Uponcompletion, the download may require post-download processing. Thisprocessing is typically performed by the calling individual application,but may be performed by the previously discussed plug-in. Thus, at 645,the example procedure may check to determine if the calling applicationis still active. If it is, the example procedure may allow the callingapplication to handle the post-download processing at 655. However, ifthe calling application has been shut-down, at 650, the applicationresource manager, executing the example procedure illustrated in FIG. 6,may perform the post-download processing.

Once the post-processing has been completed, the application resourcemanager may pass the download or a pointer to the download to thecalling application at 660. If the calling application is not online,e.g., at 650, then the completion notification is stored for deliveryupon reactivation of the calling application, e.g., at 652. Step 660 mayalternatively be performed prior to 655, in addition to being performedsubsequent to 652. In one example embodiment, the application resourcemanager, via the dedicated communication link, may communicate thedownload information via IPC, e.g., passing a pointer to the completeddownload to the calling application. Optionally, or upon a download thatis configured to issue an alert, at 670, the example procedure mayactivate a notification function, that may alert the user a download hascompleted. This could include any number of things, including: a systemsound, a graphic message, sending an email, sending a text message, orproviding an alert within the application resource manager userinterface. At 675, the example procedure will remove the completedrequest from the download queue. Finally, the example procedure maycycle back at 680 to determine if further downloads are waiting tobegin. If they are not, the example procedure may wait for any ongoingdownloads to complete at 640. If there are pending downloads, theexample procedure may initiate the next highest priority request in thequeue, at 630.

As illustrated, example embodiments of the application resource managermay continuously connect new individual applications and installassociated plug-ins received from those applications. The exampleembodiment may continuously receive download, update, message and/or anyother request requiring data transfers with an outside network fromconnected applications. The example embodiment may prioritize and queuethe requests, and facilitate the optimization of satisfying thoseprioritized requests. The example embodiment may post-process completeddownloads, provide notifications, and pass the data to the requestingapplication for further use. Finally, the example embodiment mayconcurrently and continuously perform these operations, in addition toother tasks, to provide a performance optimized user experience.

FIG. 7A illustrates an example user interface (UI) according to anexample embodiment of the present invention. The example UI may haveseveral feature sets, e.g., iBoards, downloads, uploads, messages, andsupport. The example display of FIG. 7A illustrates the “iBoards”feature as a collection of the installed individual applications for theuser to select. A fixed number of launch icons may be visible, and thisnumber may be customizable in user settings. Further, navigation buttonsmay be present for rotating the set of launch icons that are visible andavailable for selection. As was previously discussed, each of theseapplications may call for data from an outside network (e.g., theInternet), and the prioritized and optimized queue of downloads for eachapplication may be viewed under the “download” feature. An example ofthis view is illustrated in FIG. 7B. Relevant information may bepresented about each download with graphics and/or text. For example,date/time queued, calling application, file name, file type, file size,download start, percent complete, estimated completion time, currentlyelapsed download time, total download time for finished items,prioritization level, command links to change prioritization levels, anexplanation of why an entry has a certain priority, and any otherrelevant information or function link. The upload interface may besimilar to the download interface, but with traffic in the oppositedirection. Some applications may be upload intensive, such as systemback up applications, photo sharing and online album applications, etc.Additionally, since most consumer Internet connections have an uploadbandwidth that is significantly more restrictive than the downloadbandwidth of the same connection, mere messages, simple attachments, andupdate requests may cause a backlog of uploads requiring optimization.

The download and upload functions may also contain global functions,such as “pause all downloads,” “pause all uploads,” or “pause alltransfers.” Additionally, global functions such as rescheduling,resuming, canceling, deleting, or reprioritizing the uploads, downloads,or transfers may be provided as user functions. Additionally, a subsetof these functions may be provided in a smaller “pop out” UI. Thissmaller control interface may be designed to be less intrusive on theoutput display area, to more readily be used in conjunction with otherapplications on the device. One example embodiment of this smallerinterface is illustrated in FIG. 8A and FIG. 8B. This example embodimentuses a “stack” of key features and functions. FIG. 8A illustrates anexample expansion of the “Downloads” function, while FIG. 8B illustratesan example expansion of the “Messages” function. For example, at 810,the total number of current uploads is displayed with the function to“pause all” or expand this collapsed section to display moreinformation, e.g., an itemized list of the uploads. Element 830 shows anexpanded section. This section shows the pending messages with thefunctions of “remind all” and a “-” to collapse the section. Within theexpanded section 830, a set of new messages for each active individualapplication is listed. In this example embodiment, collapsed andexpanded sections are illustrated, but even the expanded sections arestill a subset of the larger interfaces illustrated in FIGS. 7A and 7B.For example, the “Virtual Album iBoard” element 835, shows only one newmessage at a time, with navigation arrows to move to other new messages.This is only one illustrative example, and other implementations mayinclude more or less information in the expanded view. The messages mayalso include function links, e.g., discard the message, send a reminder,and collapse the subsection.

The amount of information displayed on the smaller interface may becustomized by user settings. For example, when a new download completes,the smaller interface may temporarily expand to display the messagesection for that application. Alternatively, the smaller interface mayexpand the entire message section, or just the specific message. Theexpansion may last until the user acknowledges the message, may collapseafter a fixed period of time, or may collapse after a fixed period oftime in which a condition occurs (e.g., input device activity toindicate the user is actively using the system). Alternatively, thesefeatures may be turned off, and expansion may only occur upon expressuser command, or such an arrangement may be set for certain types ofmessages (e.g., file completion), but not other types of messages (e.g.,email). Further, messages on the smaller interface may include otherfunctions within the messages, e.g., a download complete notificationmay include a function link to launch the individual application thatoriginally requested the download.

It should be understood that there exist implementations of othervariations and modifications of the invention and its various aspects,as may be readily apparent to those of ordinary skill in the art, andthat the invention is not limited by specific embodiments describedherein. Features and embodiments described above may be combined. It istherefore contemplated to cover any and all modifications, variations,combinations or equivalents that fall within the scope of the basicunderlying principals disclosed and claimed herein.

1. A computer implemented method for managing computer applications,comprising: receiving from a first computer application a first downloadrequest, the first download request being based on user input receivedby the first computer application; receiving from a second computerapplication a second download request, the second download request beingbased on user input received by the second computer application, whereinthe first and the second computer applications are independent of eachother; prioritizing the first download request and the second downloadrequest, according to at least user priority input; downloading dataassociated with the download requests, according to the prioritization;upon completion of a data download, passing information regarding thedownloaded data to whichever application passed the associated requestto the application manager; upon completion of a data download, removingthe completed download from the prioritization, and for all remainingdata download requests: downloading data associated with the remainingdata download requests, according to the prioritization. 2-4. (canceled)5. The method of claim 1, further comprising receiving applicationupdates from an update server and passing ; the updates along towhichever application of a plurality of applications indicated by aparticular update.
 6. The method of claim 5, wherein a particularreceived application update was requested after receiving a message froma particular application requesting the particular update.
 7. The methodof claim 1, further comprising receiving from a plurality ofapplications, a plug-in, configured to perform a sub-set of functionsassociated with a particular application that provided the plug-in. 8.The method of claim 7, further comprising upon completion of a download,modifying the download based on functions defined by the plug-inprovided by an application that requested the completed download.
 9. Themethod of claim 8, further comprising first checking to see if theapplication that requested the completed download is running, and ifrunning, passing the completed download to the application for modifyingthe download, in substitute to performing the modifying at theapplication manager.
 10. The method of claim 1, wherein the methodincludes providing a user interface to control aspects of a computersystem upon which the method executes, the method further comprising:minimizing the user interface; and providing a reduced user interfaceincluding at least the following functions: functions to pause alluploads, downloads, or both, functions to display at least part of anewly received notification.
 11. The method of claim 1, wherein theprioritizing is based on a priority score derived from a combination ofdefault settings, stored user settings, and other user input, includingat least one of: an origination application, a request type, and arequest context.
 12. A device for managing computer applications,comprising: a processor including an application management moduleconfigured to: receive from a first computer application a firstdownload request, the first download request being based on user inputreceived by the first computer application; receive from a secondcomputer application a second download request, the second downloadrequest being based on user input received by the second computerapplication, wherein the first and the second computer applications areindependent of each other; prioritize the first download request and thesecond download request; download data associated with the downloadrequests, according to the prioritization; upon completion of a datadownload, pass information regarding the downloaded data to whicheverapplication passed the associated request to the application manager;upon completion of a data download, remove the completed download fromthe prioritization, and for all remaining data download requests:downloading data associated with the remaining data download requests,according to the prioritization.
 13. The device of claim 12, wherein thereceiving and passing are performed between the application manager andat least a third application and third download request.
 14. The deviceof claim 12, wherein the prioritization is based on a priority scorecomprising a plurality of factors, including default settings, usersettings and other user input.
 15. The device of claim 12, whereinperformance metrics of the application manager are recorded by theapplication manager.
 16. The device of claim 12, wherein the applicationmanager is configured to receive application updates from an updateserver; wherein the application manager is configured to pass theupdates along to whichever application of a plurality of applicationsindicated by a particular update.
 17. The device of claim 16, whereinthe application manager requested a particular received applicationupdate, after receiving a message from a particular application,requesting the particular update.
 18. The device of claim 12, whereinthe application manager is configured to receive from each of aplurality of applications, a plug-in, configured to perform a sub-set offunctions associated with a particular application that provided theplug-in to the application manager.
 19. The device of claim 18, whereinthe application manager is configured to modify, upon completion of adownload, the download based on functions defined by the plug-inprovided by an application that requested the completed download. 20.The device of claim 19, wherein the application manager is configured tofirst check to see if the application that requested the completeddownload is running, and if running, pass the completed download to theapplication for modifying the download, in substitute to performing themodifying at the application manager.
 21. The device of claim 12,wherein the application manager module is configured to present a userinterface on a computer system, the application manager module furtherconfigured to: minimize the user interface; and provide a reduced userinterface including at least the following functions: functions to pauseall uploads, downloads, or both, functions to display at least part of anewly received notification.
 22. A computer implemented method formanaging computer applications, comprising: receiving from a firstcomputer application a first resource request, the first resourcerequest being based on user input received by the first computerapplication; receiving from a second computer application a secondresource request, the second resource request being based on user inputreceived by the second computer application, wherein the first and thesecond computer applications are independent of each other; prioritizingthe first resource request and the second resource request, according toat least user priority input; scheduling the resource request with theresource in a queue, according to the prioritization; upon satisfactionof the resource request, passing information regarding the satisfactionto whichever application passed the associated request to theapplication manager; and removing the satisfied resource request fromthe queue, and for all remaining resource requests: satisfying theremaining resource requests, according to the prioritization.
 23. Thecomputer implemented method of claim 22, wherein the prioritization isbased on a priority score that includes a plurality of factors,including: default settings, user settings, and other user input,wherein the resource request includes at least one of: a request to usenetwork bandwidth resource, a request to present an image on an outputresource, and a request to execute a task on a processor resource.